package cn.wolfcode.luowowo.redis.util;

import cn.wolfcode.luowowo.util.Consts;
import lombok.Getter;

/**
 * 统一 Redis中的常量管理
 **/

@Getter
public enum RedisKeys {

    //urlAPI接口防刷
    BRUSH_PROOF("brush_proof", 60L),//有效时间 60s

    //攻略点赞的key
    STRATEGY_THUMBUP("strategy_thumbup", -1L),//-1表示不设置超时

    //攻略收藏的key
    USER_STRATEGY_FAVOR("user_strategy_favor", -1L),//-1表示不设置超时

    //攻略阅读量的key
    STRATEGY_STATIS_VO("strategy_statis_vo", -1L),//-1表示不设定超时

    //短信频率限制的key
    SEND_COUNT("send_count", Consts.VERIFY_CODE_VAI_TIME * 60L),//有效时间5分钟

    //用户登录后保存用户信息的key
    USER_LOGIN_TOKEN("user_login_token", Consts.USER_INFO_TOKEN_VAI_TIME * 60L),//有效时间30分钟

    //验证短信时，存储验证码的key
    VERIFY_CODE("verify_code", Consts.VERIFY_CODE_VAI_TIME * 60L);//有效时间5分钟

    private String prefix;  //Redis的key前缀
    private Long time;      //redis的key有效时间，单位是 s

    //构造器：创建验证码的key前缀常量
    private RedisKeys(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }

    //拼接Redis的key
    /*public String join(String value){
        StringBuilder sb = new StringBuilder();
        sb.append(this.prefix).append(":").append(value);
        return sb.toString();
    } */

    //verify_code:xxx:xxx:xxx:xxx
    public String join(String... values) {
        StringBuilder sb = new StringBuilder();
        sb.append(this.prefix);
        for (String v : values) {
            sb.append(":").append(v);

        }
        return sb.toString();
    }

}
